The invention relates to a method of dynamically altering the memory management procedures of the Network Control Program's (NCP's) in a Systems Network Architecture (SNA) network. For purposes of illustration, one implementation of the invention is described in connection with the well-known IBM Virtual Terminal Access Method (VTAM) software running on IBM or plug-compatible mainframe computers. It will be appreciated by those of ordinary skill having the benefit of this disclosure that the invention can be similarly implemented in other SNA-compliant networks, e.g., those involving an IBM AS/400 or similar computer. (This application is related to my commonly-assigned application Ser. No. 08/001,195, filed Jan. 7, 1993, which is incorporated by reference).
Details of the NCP program and its operational characteristics as part of the SNA protocol are extensively documented in a variety of widely available publications and other references. The IBM publications "SNA Technical Overview," publication no. GC30-3073-3, hereafter "[SNATechOv]," and "NCP Version 5 Network Performance and Tuning," publication no. GG24-3469, are incorporated by reference as nonessential background information familiar to those of ordinary skill. Chapters 1 and 2 and the glossary of [SNATechOv] are, potentially, especially helpful.
Appendix 1 sets out selected source code extracts from a copyrighted commercial software package distributed by the assignee of this application under the trademark OPERTUNE which manifests the invention. Permission is granted to make copies of the appendix solely in connection with the making of facsimile copies of this application in accordance with applicable law; all other rights are reserved, and all other reproduction, distribution, creation of derivative works based on the contents, public display, and public performance of the microfiche appendices or any part thereof are prohibited by the copyright laws.
1.2 Overview of SNA Architecture & Glossary of Terms
The concepts discussed in the overview explanation that follow are illustrated in FIG. 1, which is a block diagram showing the hierarchical nature of the SNA architecture.
SNA was developed as a hierarchical architecture organized into groups that have specific functions. SNA "nodes" are collected into a structure of "networks," "domains," and "subareas" as explained in the following glossary of selected terms well known to those of ordinary skill:
37xx: the product number of a series of communication controllers introduced by IBM between 1975 and the present. The 37xx series controllers execute a software program called Network Control Program (NCP) that controls and directs communication controller activity. These controllers are responsible for relieving the central processing unit of much of the burden of communications management.
Boundary link: a link comprising part of a path between two SNA nodes and physically terminating in or attached to one of the nodes. See also Intermediate link.
Channel: an SNA channel (sometimes referred to as a "370 data channel") is a communications path, largely local to a host computer and its on-site peripherals, that makes use of a specific SNA communications protocol. See [SNATechOv], FIGS. 1-3. Channels are sometimes referred to colloquially as "channel attachments" attached to a host computer. The protocol used in channel attachments is characterized by comparatively high data throughput, e.g., 3 million bytes per second (Mbps) and higher.
Controller: a communication's controller (sometimes referred to as a "cluster controller") provides an interface between an SNA network and one or more end users at terminals to the SNA network. It buffers the entries that users make at their terminals. When polled by the NCP, the cluster controller delivers the buffers to the NCP. When the NCP selects and delivers messages to the cluster controller, the cluster controller receives the buffers and delivers each message to the correct terminal.
Domain: all subareas that are controlled by a common VTAM (P5) node.
FEP: Front End Processor, a name given to the 37xx series and compatible communication controllers.
Intermediate link: a link comprising an intermediate part of a path between two SNA nodes but not physically terminating in or attached to either node. See also Boundary link.
Load module: a module of executable program code and preallocated/preformatted memory loaded into NCP processor memory during NCP initialization. The load module provides the data storage and manipulation routines necessary for NCP execution.
Link: a communications path between two nodes in a SNA network, normally operating in conformance with the Synchronous Data Link Control (SDLC) communications protocol.
LU: logical unit.
NCP: see Network Control Program.
Network: all connected domains.
Network architecture: the rules that govern the services, functions, and protocols of network components. A widely used network architecture is the Systems Network Architecture (SNA) developed by IBM.
Network Control Program (NCP): an IBM computer program that executes in the communication controller's hardware to perform the work of network communication for remote connections. The NCP polls the cluster controllers to send and receive messages and controls dialing and answering modems that are attached to it. The NCP routes messages that are destined for other subareas.
Network resource: the speed or capacity of a physical network component that is needed by network users to move data from one point to another in a network.
Network user: an end user or application that requires network resources to complete assigned tasks.
Node: a set of hardware, and the software associated with that hardware, that implements all seven standard layers of the SNA architecture (which are physical control, data link control, path control, transmission control, data flow control, presentation services, and transaction services).
Overutilization: a network problem that occurs when the number of network users exceeds the capacity of a network resource. Network users must either accept less of the resource than they requested, or wait longer to acquire the requested amount. See also Underutilization.
P2: a designation for a cluster controller.
P4: a designation for an NCP node.
P5: a designation for a VTAM node.
Path information unit: a unit of message traffic.
PIU: path information unit.
PU: physical unit.
SDLC: Synchronous Data Link Control.
Session: a connection between two logical units (e.g., two applications or an application and an end user) that establishes the rules and a path for communication between the two. All sessions are initiated through a host processor executing VTAM. Two logical units that are connected in this way are often referred to as being "in session."
SNA: Systems Network Architecture.
Subarea: a VTAM or NCP node (P5 or P4) and all the cluster controllers (P2s) or token rings that are attached and controlled by it.
Underutilization: a network problem that occurs when much of the capacity of a network resource is not needed by network users and is being wasted. See also Overutilization.)
DOS/VSE: Disk Operating System/Virtual Storage Extended. A mainframe operating systems developed by IBM that is an extension of an earlier operating system, Disk Operating System/Virtual Storage (DOS/VS).
VTAM: Virtual Telecommunications Access Method software. VTAM executing in a host processor system controls the interface between host applications and the network. It also maintains the domain configuration and initiates communications called "sessions" between the other network components. A newer type of SNA component can initiate sessions between two PU nodes without VTAM; a process known as Advanced Peer-to-Peer Networking or "APPN.")
1.3 Initialization of a SNA Network
A key aspect of the background of the invention is the manner in which initialization of a SNA network is normally accomplished. As is well known to those of ordinary skill, during initialization of a network a customized NCP program "load module" is created for each communications controller or FEP by a network administrator who runs one or more utility programs to link selected program components together. The network administrator's customization of each load module includes selecting appropriate values for various NCP parameters that are discussed in more detail below.
Load modules are selectively downloaded from a host computer running VTAM to one or more selected controllers on the network over a channel or link. The controller stores the load module into local storage and formats its remaining storage for use as buffers for incoming and outgoing network traffic.
Importantly in the context of the invention, an initialized NCP has a predetermined amount of memory to use during network control operations. This memory is divided between message buffers and NCP control block buffers. Message buffers are used by active processes to communicate or exchange data. Control block buffers are used by the NCP to represent different types of active processes. Current techniques do not allow the quantity, or distribution, of this (buffer) memory to be changed during normal operations. The only way to change the amount or distribution of NCP buffer space is to regenerate (e.g., respecify) and reinitialize (initialize and download a new NCP process) the NCP process.
1.4 Overview of Selected NCP Operational Aspects
During normal network operations the primary function of the NCP is session management. A typical NCP may be connected as shown in FIG. 2. NCP 201 represents each of the resources (e.g., hardware devices or software application) connected to it (boxes 203, 205, 207, 209, and 211) with control blocks. Each control block is a piece of memory that contains information about its particular resource such as the resources' model number, what operations it can perform, what operations it is not allowed to perform, etc.
Different types of resources require the use of different types of control blocks within the NCP. At initialization time NCP 201 is instantiated with a number of blank control blocks of various types. As different resources attach themselves to the NCP an appropriate, predefined, control block structure is used to represent the new resource.
Collections of unused control blocks are called "pools." There is a pool for each type of control block. The NCP keeps track of control blocks within a pool through the use of "free chains" and "anchor" blocks. See FIG. 3. Anchor block 301 is a control block whose position is known to the NCP and through which the NCP accesses the associated pool's available control blocks 303 and 305. Free chains operate like singly-linked lists of control blocks. All available (i.e., unused) control blocks are kept in free chains.
The NCP is also responsible for managing the communication between two active processes whose link passes through the NCP. In this case, message buffers are used to encapsulate chunks of information for transmission from one user (or application or device) to another. Message buffers are similar to control blocks in that they are pieces of memory that are used by the NCP during information transfer operations.
The size and number of message buffers is, as with control blocks, determined at NCP initialization time. Message buffers are also managed through the NCP's use of anchor blocks and free chains. All available (i.e., unused) message buffers are kept in a free chain.
Additionally, each message buffer has associated with it use-flag and eye-catcher fields. See FIG. 4. The use-flag 403 is a text field that indicates if the message buffer is free (by the pattern *00* for example) or in use (by the pattern *80* for example). The eye-catcher 405 is also a text field (*C2* for example) and signifies the beginning of the buffer's memory. All message buffer memory not occupied by either the use-flag or eye-catcher, 407, is available for data.
1.5 Limitations of Current NCP Operations
Current techniques, as defined by the IBM NCP protocol, allow for the dynamic use of predefined control blocks. The concept behind this technique is that although a control block need not be defined at initialization time for every resource that could be used, the absolute number of control block structures instantiated at NCP initialization time is predefined. Thus, during normal operations a shortage of control blocks may still develop.
For instance, as network size and complexity increases or current network loads change, the number of available control blocks (of a specific type) may go to zero. When this happens no new processes dependent upon that type of control block may be initiated--the system has no means of representing, or acknowledging, the requesting resource. Typically this happens during the busiest time of the day, when a large number of people are trying to log onto the network. Having a sufficient number of control blocks for all requesting users, or resources, has nothing to do with performance but is strictly a matter of availability.
To utilize fully a SNA network it is desirable not to let an artificial limit on resources (i.e., control block availability) limit a user's access to the network. One approach to this problem is to allow the NCP process control the creation, and deletion, of control blocks on an "as needed" basis.